FE-1559: Adopt the worksheet focus layer in the Simulate view tables - #9446
FE-1559: Adopt the worksheet focus layer in the Simulate view tables#9446kube wants to merge 1 commit into
Conversation
|
The latest updates on your projects. Learn more about Vercel for GitHub.
1 Skipped Deployment
|
37c0141 to
959fd47
Compare
959fd47 to
f2d2ca8
Compare
PR SummaryLow Risk Overview
Docs for scenarios and experiments describe the new list interaction. Reviewed by Cursor Bugbot for commit 182e002. Bugbot is set up for automated code reviews on this repo. Configure here. |
f2d2ca8 to
ca3081d
Compare
ca3081d to
e439ffa
Compare
e439ffa to
e502ef1
Compare
e502ef1 to
511bf54
Compare
511bf54 to
182e002
Compare
There was a problem hiding this comment.
Cursor Bugbot has reviewed your changes and found 1 potential issue.
❌ Bugbot Autofix is OFF. To automatically fix reported issues with cloud agents, enable autofix in the Cursor dashboard.
Reviewed by Cursor Bugbot for commit 182e002. Configure here.
| <div | ||
| aria-colcount={columnCount} | ||
| ref={onRowSelect ? attach : undefined} | ||
| aria-colcount={columns.length} |
There was a problem hiding this comment.
Interactive table keeps static table role
Medium Severity
Rows are now a single Tab stop with ArrowUp/ArrowDown as the only way to reach the others, but the widget still uses role="table" and role="cell". Screen readers treat that as a static table and intercept arrow keys, so assistive-tech users can land on the first row and cannot walk or activate the rest. The sibling spreadsheet that uses the same focus hooks exposes role="grid" and role="gridcell" for this reason.
Additional Locations (2)
Reviewed by Cursor Bugbot for commit 182e002. Configure here.


🌟 What is the purpose of this PR?
Stacked on #9420. Adopt the worksheet keyboard-flow layer in the Simulate-mode tables — the scenarios, experiments, optimizations, and metrics lists share one
Tablecomponent whose every row was its own Tab stop with no arrow keys, and whose single click opened the drawer with no way to select a row without opening it.🔗 Related links
🔍 What does this change?
Tabledelegates row focus touseFocusStops: each table is one Tab stop with a roving tabindex, and ArrowUp/ArrowDown walk the rows.useSelectFirstActivation): the first click selects (focuses) a row, a click on the selected row — or Enter/Space — callsonRowSelectand opens the drawer. The focused row shows the inset ring on any focus, not only:focus-visible, so pointer users see the selection.renderActionsper-row action-column API is deleted (no caller existed).onRowSelect(the optimization steps table) stay inert, as before.Pre-Merge Checklist 🚀
🚢 Has this modified a publishable library?
This PR:
📜 Does this require a change to the docs?
The changes in this PR:
🕸️ Does this require a change to the Turbo Graph?
The changes in this PR:
SimulationContext.selectedScenarioId) — today that is only settable from the Simulation Settings picker. Select-first creates the natural slot for it; wiring it up is a product decision left for a follow-up.🐾 Next steps
🛡 What tests cover this?
table.test.tsx: one Tab stop with roving tabindex, arrow-key row walking, select-first click activation, Enter/Space activation, and inert rows withoutonRowSelect.focus-flow.test.tsx(below in the stack) covers the underlying movement contract.❓ How to test this?
yarn dev, switch the top-bar mode to Simulate.The tables' visuals are unchanged apart from the focus ring; existing docs screenshots stay valid.
🤖 Generated with Claude Code